gusucode.com > 各种VC自绘控件源码程序 > 各种VC自绘控件源码/code/SkinControls(自绘MFC基本控件 )/SkinControls/Test/SkinDlg.cpp

    // SkinDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "Test.h"
#include "SkinDlg.h"
#include ".\skindlg.h"


// CSkinDlg 对话框

IMPLEMENT_DYNAMIC(CSkinDlg, CSkinDialog)

BEGIN_MESSAGE_MAP(CSkinDlg, CSkinDialog)
	ON_WM_RBUTTONDOWN()
	ON_WM_MEASUREITEM()
END_MESSAGE_MAP()

CSkinDlg::CSkinDlg(CWnd* pParent /*=NULL*/)
	: CSkinDialog(CSkinDlg::IDD, pParent) , m_splitter(VorSpliter)
{
}

CSkinDlg::~CSkinDlg()
{
}

void CSkinDlg::DoDataExchange(CDataExchange* pDX)
{
	__super::DoDataExchange(pDX);

	DDX_Control(pDX, IDOK, m_btnOk);
	DDX_Control(pDX, IDCANCEL, m_btnCancel);
	DDX_Control(pDX, IDC_CHECK1, m_chk1);
	DDX_Control(pDX, IDC_RADIO1, m_rad1);
	DDX_Control(pDX, IDC_RADIO2, m_rad2);
	DDX_Control(pDX, IDC_COMBO1, m_com);
	DDX_Control(pDX, IDC_EDIT1, m_edt);
	DDX_Control(pDX, IDC_STATIC1, m_hl);
	DDX_Control(pDX, IDC_SLIDER1, m_slider);
	DDX_Control(pDX, IDC_PROGRESS1, m_progress);
	DDX_Control(pDX, IDC_vor, m_splitter);
	DDX_Control(pDX, IDC_LIST1, m_list);
	DDX_Control(pDX, IDC_RICHEDIT21, m_rich2);
	DDX_Control(pDX, IDC_TREE1, m_tree);
}

BOOL CSkinDlg::OnInitDialog()
{
	__super::OnInitDialog();

	SetBorderImage(_T("Res\\Test\\dlg_border_tl.bmp"),_T("Res\\Test\\dlg_border_tm.bmp"),_T("Res\\Test\\dlg_border_tr.bmp"),
		_T("Res\\Test\\dlg_border_ml.bmp"),_T("Res\\Test\\dlg_border_mr.bmp"),_T("Res\\Test\\dlg_border_bl.bmp"),
		_T("Res\\Test\\dlg_border_bm.bmp"),_T("Res\\Test\\dlg_border_br.bmp"));

	LoadCloseImage(_T("Res\\test\\dlg_close2.bmp"));
	LoadMinImage(_T("Res\\test\\dlg_min.bmp"));
	LoadMaxImage(_T("Res\\test\\dlg_max.bmp"));
	LoadResImage(_T("Res\\test\\dlg_resore.bmp"));

	m_Scroll.Load(_T("res\\Common\\scroll.bmp"), CXIMAGE_FORMAT_BMP);

	m_btnOk.SetButtonImage(_T("Res\\Common\\btn_back.png"), CXIMAGE_FORMAT_PNG);
	m_btnCancel.SetButtonImage(_T("Res\\Common\\btn_back.png"), CXIMAGE_FORMAT_PNG);
	m_chk1.SetCheckImage(_T("Res\\test\\check.bmp"), CXIMAGE_FORMAT_BMP);
	m_rad1.SetRadioImage(_T("Res\\test\\radio.bmp"), CXIMAGE_FORMAT_BMP);
	m_rad2.SetRadioImage(_T("Res\\test\\radio.bmp"), CXIMAGE_FORMAT_BMP);
	m_com.SetComboBtnImage(_T("Res\\test\\arrow.bmp"), CXIMAGE_FORMAT_BMP);

	m_hl.SetHyperLinkUrl(_T("http://www.baidu.com"));

	m_edt.SetPromptText(_T("编辑框"));

	m_progress.SetProgressBackImage(_T("Res\\test\\luminance.png"), CXIMAGE_FORMAT_PNG);
	m_slider.SetBackImage(_T("Res\\test\\hue.png"), CXIMAGE_FORMAT_PNG);
	m_slider.SetThumbImage(_T("Res\\test\\thumb.png"), CXIMAGE_FORMAT_PNG);

	m_splitter.SetVorSplitterImage(_T("Res\\Test\\dlg_border_tm.bmp"),CXIMAGE_FORMAT_BMP);
	m_splitter.SetSplitterRange(10, 500);

	m_list.SetHeaderImage(_T("Res\\Test\\headctrl.bmp"),CXIMAGE_FORMAT_BMP);
	m_list.SetSeparatorImage(_T("Res\\Test\\head_separator.bmp"),CXIMAGE_FORMAT_BMP);
	CString str;
	m_list.SetRedraw(FALSE);
	for (WORD i=0;i<3;i++)
	{
		
		str.Format(_T("column%d"),i);
		m_list.InsertColumn(i, str,LVCFMT_LEFT, 100);
	}
	m_list.SetRedraw(TRUE);

	for (WORD i=0;i<10;i++)
	{
		str.Format(_T("column%d"),i);
		m_list.InsertItem(i, str);
		for (WORD j=1;j<3;j++)
		{
			m_list.SetItemText(i, j, str);
		}
	}
	SkinSB_InitH(m_list.m_hWnd, m_Scroll.MakeBitmap());
	
	m_tree.SetPlusMinusImage(_T("res\\test\\PlusMinus.bmp"), CXIMAGE_FORMAT_BMP);
	for (WORD i=0;i<10;i++)
	{
		CString str;
		str.Format(_T("item%d"),i);
		m_tree.InsertItem(str, 0, 0);
	}
	SkinSB_InitH(m_tree.m_hWnd, m_Scroll.MakeBitmap());

	m_rich2.InsertImage(_T("Res\\test\\system_msg.bmp"));
	m_rich2.InsertGif(_T("Res\\test\\0.gif"));
	SkinSB_InitH(m_rich2.m_hWnd, m_Scroll.MakeBitmap());
	

	return TRUE;
}





void CSkinDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
	CSkinMenu menu;
	menu.CreatePopupMenu();
	menu.AppendMenu(0, 0, _T("menu1"));
	menu.AppendMenu(0, 1, _T("menu2"));
	menu.AppendMenu(MF_SEPARATOR);
	menu.AppendMenu(0, 2, _T("menu3"));

	CPoint pt;
	GetCursorPos(&pt);
	menu.TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,pt.x,pt.y,this);

	menu.DestroyMenu();

	__super::OnRButtonDown(nFlags, point);
}

void CSkinDlg::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
	m_list.MeasureItem(lpMeasureItemStruct);

	__super::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
}